Many cloud operators currently host cloud services using a few large data centers, providing a relatively centralized operation. In such systems, a requestor may request the use of one or more resources from a cloud controller which may, in turn, allocate the requested resources from the data center for use by the requestor. This centralized operation, however, may not be well suited for hosting various types of applications, such as those with strict delay or reliability requirements.
Distributed data center architectures, on the other hand, provide a larger number of smaller data centers that may be geographically distributed. The data centers may remain under the control of one or more cloud controllers through a network such as the Internet or carrier networks. Under such a distributed system, the effects of network propagation delay may be reduced by providing cloud resources that are closer to a requestor in terms of geographic or network distance than a centralized cloud may be able to provide.
In various applications, a cloud may provision compute nodes, such as virtual machines, to process data stored by data nodes within the cloud. It may not always be possible, however, to guarantee that such data nodes will be local to the compute nodes processing the data. For example, a compute node may be located on a different server or rack in the data center of the data node, or may be located in a different data center from the data node. In such a case, issues such as propagation delay and bandwidth may further impact the communication latency between data nodes and compute nodes or between multiple computer nodes cooperating to perform a processing task.